---
title: Faço o deploy do seu site Astro no GitLab Pages
description: Como fazer o deploy do seu site Astro para a web no GitLab Pages.
type: deploy
i18nReady: true
---

Você pode usar o [GitLab Pages](https://pages.gitlab.io/) para hospedar um site Astro para seu projeto, grupo ou conta de usuário do [GitLab](https://about.gitlab.com/).

:::tip[Procurando por um exemplo?]
Veja o [exemplo oficial de um projeto Astro no GitLab Pages](https://gitlab.com/pages/astro)!
:::

## Como fazer o deploy

1. Defina a opção `site` corretamente em `astro.config.mjs`.
2. Defina `outDir:public` em `astro.config.mjs`. Essa opção instrui o Astro a colocar o resultado estático da build do site em um diretório chamado `public`, que é o local exigido pelo GitLab Pages para arquivos expostos.

  Se você estava usando o [diretório `public/`](/pt-br/basics/project-structure/#public) como fonte de arquivos estáticos em seu projeto Astro, renomeie o diretório e defina `publicDir` com o novo nome em `astro.config.mjs`.

  Por exemplo, aqui estão as configurações corretas de `astro.config.mjs` quando o diretório `public/` é renomeado para `static/`:

   ```js
   import { defineConfig } from 'astro/config';

   export default defineConfig({
     sitemap: true,
     site: 'https://astro.build/',
     outDir: 'public',
     publicDir: 'static',
   });
   ```

3. Crie um novo arquivo chamado `.gitlab-ci.yml` na raiz do seu projeto com o conteúdo abaixo. Assim será realizado a build e o deploy do seu site sempre que você modificar seu conteúdo:

   ```yaml
   # A imagem do Docker que será utilizada para a build da sua aplicação
   image: node:lts

   pages:
     cache:
       paths:
         - node_modules/
     script:
       # Especifique as etapas necessárias para a build da sua aplicação aqui
       - npm install
       - npm run build

     artifacts:
       paths:
         # O diretório que possui os arquivos construídos a serem publicados.
         # Precisa ser chamado de "public"
         - public

     only:
       # Inicia uma nova build e deploy somente quando há um push
       # na(s) branch(es) abaixo
       - main
   ```
